package com.piece.core.mongo.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.CompoundIndexes;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.io.Serializable;
import java.util.Date;

/**
 * 定时任务调度日志表 sys_job_log
 */
@Data
@NoArgsConstructor
@Document(collection = "sys_job_log")
@CompoundIndexes({
        @CompoundIndex(name = "index_sys_job_log", def = "{'log_id':1,'job_name':1}")
})
public class MongoJobLog implements Serializable {

    /**
     * 日志ID
     */
    @Id
    private String logId;

    /**
     * 任务名称
     */
    @Field("job_name")
    private String jobName;

    /**
     * 任务组名
     */
    @Field("job_group")
    private String jobGroup;

    /**
     * 任务方法
     */
    @Field("method_name")
    private String methodName;

    /**
     * 方法参数
     */
    @Field("method_param")
    private String methodParam;

    /**
     * 异常信息
     */
    @Field("exception_info")
    private String exceptionInfo;

    /**
     * 开始时间
     */
    @Field("start_time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    /**
     * 结束时间
     */
    @Field("end_time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;

    /**
     * 执行次数
     */
    @Field("exec_count")
    private Integer execCount;

    /**
     * 执行时间
     */
    @Field("exec_time")
    private String execTime;

    /**
     * 执行状态（0结束 1删除 2执行中 3暂停 4失败）
     */
    @Field("status")
    private String status;
}